#!/usr/bin/env python3
"""
提示词配置文件
统一管理所有系统提示词和用户提示词
"""

# 系统提示词配置
SYSTEM_PROMPTS = {
    "default": "你是一个有用的AI助手，可以回答问题和协助用户完成各种任务。",
    
    "helpful": "你是一个友善、有帮助的AI助手。请用温和、耐心的语气回答用户的问题，并尽可能提供详细和有用的信息。",
    
    "creative": "你是一个富有创造力的AI助手。请用生动、有趣的方式回答问题，可以使用比喻、故事或创新的角度来解释问题。",
    
    "professional": "你是一个专业的AI顾问。请用准确、简洁、专业的语言回答问题，提供基于事实的信息和建议。",
    
    "polyhedron_detection": """你是一个专业的计算机视觉助手，擅长识别和定位图像中的几何体。请仔细观察图片中的多面体。如果发现多面体，请按照以下JSON格式输出其绝对坐标：

{
  "detected": true,
  "coordinates": [
    [x1, y1, x2, y2]
  ],
  "description": "多面体描述"
}

其中：
- coordinates是边界框坐标数组，[x1, y1, x2, y2]表示左上角和右下角坐标
- 坐标必须是基于图片实际像素的绝对坐标
- 如果有多个多面体，请在coordinates数组中包含所有边界框

如果没有发现多面体，请输出：
{
  "detected": false,
  "message": "未检测到多面体"
}""",
    
    "vision_assistant": "你是一个专业的计算机视觉助手，擅长识别和定位图像中的多面体。"
}

# 用户提示词配置
USER_PROMPTS = {
    "polyhedron_detection": """请仔细观察图片中的多面体
如果发现多面体，请按照以下JSON格式输出其绝对坐标：

{
  "detected": true,
  "coordinates": [
    [x1, y1, x2, y2]
  ],
  "description": "多面体描述"
}

其中：
- coordinates是边界框坐标数组，[x1, y1, x2, y2]表示左上角和右下角坐标
- 坐标必须是基于图片实际像素的绝对坐标
- 如果有多个多面体，请在coordinates数组中包含所有边界框

如果没有发现多面体，请输出：
{
  "detected": false,
  "message": "未检测到多面体"
}"""
}

# 默认配置
DEFAULT_CONFIG = {
    "chat_title": "🤖 Qwen2-VL 对话Demo",
    "welcome_message": "您好！我是Qwen2-VL，可以进行文本对话和图片识别。请发送消息或上传图片开始对话！"
}

# 预设配置映射（用于前端配置页面）
PRESET_MAPPING = {
    "default": "default",
    "helpful": "helpful", 
    "creative": "creative",
    "professional": "professional",
    "polyhedron": "polyhedron_detection",
    "custom": ""
}

def get_system_prompt(prompt_type: str) -> str:
    """获取系统提示词"""
    return SYSTEM_PROMPTS.get(prompt_type, SYSTEM_PROMPTS["default"])

def get_user_prompt(prompt_type: str) -> str:
    """获取用户提示词"""
    return USER_PROMPTS.get(prompt_type, "")

def get_preset_prompts() -> dict:
    """获取所有预设提示词（用于前端）"""
    return {key: SYSTEM_PROMPTS.get(value, value) for key, value in PRESET_MAPPING.items()}

def is_polyhedron_detection_mode(system_prompt: str) -> bool:
    """判断是否为多面体检测模式"""
    return ("多面体" in system_prompt and "coordinates" in system_prompt) 